#pragma once
/*
日志消息类
包含信息如下：
    1. 日志的输出时间   用于过滤日志输出时间
    2. 日志等级         用于进行入职过滤分析
    3. 源文件名称       
    4. 源代码行号       用于定位出现错误的代码位置
    5. 线程ID          用于过滤出错的线程
    6. 日志主体消息   
    7. 日志器名称      (当前支持多日志器的同时使用)
*/


#include<iostream>
#include<string>
#include<thread>

#include"level.hpp"
#include"util.hpp"

namespace mylog
{
    //使用结构体都是公有成员
    struct LogMsg
    {
        time_t _ctime;//当前时间戳
        Level::value _level;//日志等级
        std::string _file;//源文件名称
        size_t _line;//行号
        std::thread::id _tid;//线程ID
        std::string _payload;//日志消息(有效载荷)
        std::string _logger;//日志器名称

        //构造函数
        LogMsg(Level::value level,
               size_t line,
               const std::string file,
               const std::string logger,
               const std::string message)
               :_level(level),
               _ctime(mylog::util::Date::now()),
               _line(line),
               _file(file),
               _logger(logger),
               _payload(message),
               _tid(std::this_thread::get_id())
        {}
    };
}